package EventLoopTest.EventLoopTutorial;

import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;

/**
 * EventLoop 入门示例1：创建和使用EventLoop
 * 学习目标：理解EventLoop的基本概念
 */
public class Demo01_BasicEventLoop {
    public static void main(String[] args) {
        // 1. 创建EventLoopGroup（包含多个EventLoop）
        // 参数2表示创建2个EventLoop（2个工作线程）
        EventLoopGroup group = new NioEventLoopGroup(2);
        
        System.out.println("=== EventLoopGroup信息 ===");
        System.out.println("EventLoopGroup类型: " + group.getClass().getSimpleName());
        
        // 2. 查看EventLoopGroup中的EventLoop
        System.out.println("\n=== 遍历EventLoop ===");
        for (int i = 0; i < 5; i++) {
            // next()方法按顺序返回下一个EventLoop（轮询）
            System.out.println("第" + (i+1) + "次调用next(): " + group.next());
        }
        
        // 观察结果：只有2个EventLoop，会循环使用
        
        // 3. 优雅关闭
        group.shutdownGracefully();
        System.out.println("\n=== EventLoopGroup已关闭 ===");
    }
}

